home *** CD-ROM | disk | FTP | other *** search
- Path: ix.netcom.com!news
- From: Bradd W. Szonye <bradds@ix.netcom.com>
- Newsgroups: comp.lang.ada,comp.lang.c,comp.lang.c++,comp.edu
- Subject: RE: ANSI C and POSIX (was Re: C/C++ knocks the crap out of Ada)
- Date: 20 Apr 1996 16:15:27 GMT
- Organization: Netcom
- Message-ID: <01bb2ed5.084d0e40$65c2b7c7@Zany.localhost>
- References: <JSA.96Feb16135027@organon.com> <829194658snz@tsys.demon.co.uk> <DppsHq.1Ar@world.std.com> <01bb2dcf.e0201620$c6c2b7c7@Zany.localhost> <Dq4vpD.161@world.std.com>
- NNTP-Posting-Host: det-mi3-05.ix.netcom.com
- X-NETCOM-Date: Sat Apr 20 11:15:27 AM CDT 1996
- X-Newsreader: Microsoft Internet News
-
-
- On Friday, April 19, 1996, Robert A Duff wrote...
- > In article <01bb2dcf.e0201620$c6c2b7c7@Zany.localhost>,
- > Bradd W. Szonye <bradds@ix.netcom.com> wrote:
- > >Pardon me if this sounds silly, but...
- > >You shouldn't have to rely on the documentation to make up for a lack
- of
- > >common sense.
- >
- > Well, sorry, but it *does* sound pretty silly, to me. Anybody who's
- > been around computer software for a while knows pretty well that
- > predicting what software does from some vague notion of "common sense"
- > is impossible.
- >
- > For example, common sense might tell you that function arguments are
- > evaluated from left to right. Not true in C, not true in Ada, not true
- > in C++ (there, I made it relevant to all these newsgroups, in case
- > anyone's still listening ;-) ). These languages all go *against* common
- > sense (for obscure efficiency reasons, of course). In this case, if you
- > rely on common sense, instead of reading the language standard, you'll
- > get into deep trouble.
- >
- > - Bob
-
- I don't let documents substitute for common sense. That doesn't mean I
- *ignore* the documentation; that would non-sensical too. Part of common
- sense is experience. Experience tells you that arguments get pushed (not
- evaluated) right-to-left. Experience tells you you can't count on what
- order C evaluates function arguments at all. Experience tells you that if
- you claim that a buffer is 1000 bytes long, it should be 1000 bytes long,
- even if the standard *explicitly* says that it's okay to do otherwise
- under certain circumstances.
-
- In general, you shouldn't use every nitpicky detail of what is and isn't
- legal according to the standard. Not all compilers are conformant, even if
- they claim to be. Compiler vendors make mistakes too, and frequently your
- only guarantee that a compiler is 100% conformant is the vendor's
- assurance that it is.
-
- I know programmers who will look up (or have memorized) the operator
- precedence rules in C. These programmers will always use the minimal
- number of parentheses in an expression because they know the rules
- precisely. Not everyone does; maintenance programmers in particular tend
- to be junior programmers who don't know all the rules. A maintenance
- programmer is likely to "fix" something that looks wrong, even if it
- isn't. And a maintenance programmer is likely to misinterpret some subtle
- detail of a standard that the original programmer had to look up in the
- first place.
-
- My personal rule: if you have to look it up to make sure you're absolutely
- right, your code may not be maintainable or portable. If you can do it
- without looking it up; if it's absolutely as clear as the nose on your
- face, then it's okay. For more on this, read "Writing Solid Code" by Steve
- Maguire (Microsoft Press).
-
-
-